#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef unsigned char *byte_pointer;

// 2025.4.10 CSAPP-2-2.1/2.2
// void show_bytes(byte_pointer start, size_t len)
// {
//     size_t i;
//     for (i = 0; i < len; i++)
//     {
//         printf(" %.2x", start[i]);
//     }
//     printf("\n");
// }

// void show_int(int x)
// {
//     show_bytes((byte_pointer)&x, sizeof(int));
// }

// void show_float(float x)
// {
//     show_bytes((byte_pointer)&x, sizeof(float));
// }

// void show_pointer(void *x)
// {
//     show_bytes((byte_pointer)&x, sizeof(void *));
// }

// void test_show_bytes(int val)
// {
//     int ival = val;
//     float fval = (float)ival;
//     int *pval = &ival;
//     show_int(ival);
//     show_float(fval);
//     show_pointer(pval);
// }

// int main()
// {
//     int val = 0x87654321;
//     byte_pointer valp = (byte_pointer)&val;
//     show_bytes(valp, 1);
//     show_bytes(valp, 2);
//     show_bytes(valp, 3);
//     return 0;
// }

// 2025.4.10 CSAPP-2-2.3
int main()
{
    int maxnum = INT_MAX;
    int a = 1;
    int b = 2;
    printf("maxnum=%d\n", maxnum);
    printf("maxnum+a=%d\n", maxnum + a);
    printf("maxnum+b=%d\n", maxnum + b);
    unsigned int maxnum2 = UINT_MAX;
    printf("maxnum2=%u\n", maxnum2);
    printf("maxnum2+a=%u\n", maxnum2 + a);
    printf("maxnum2+b=%u\n", maxnum2 + b);
    return 0;
}